Cytosim  PI
Cytoskeleton Simulator
Simul Class Reference

Public Member Functions

 Simul ()
 constructor
 
virtual ~Simul ()
 destructor
 
void add (Object *)
 link Object
 
int add (ObjectList)
 link Objects
 
void remove (Object *)
 unlink Object
 
void remove (ObjectList)
 unlink Objects
 
void erase (Object *)
 unlink and delete object
 
void erase (ObjectList)
 unlink and delete all objects in list
 
void mark (ObjectList, int)
 mark objects in list
 
void erase ()
 erase simulation world (all sub-lists and variables)
 
real simTime () const
 time in the simulated world
 
void setTime (real t)
 set frame index
 
void initialize (Glossary &)
 perform basic initialization; register callbacks More...
 
void prepare (Space *spc)
 initialize the simulation engine More...
 
void prepare ()
 initialize the simulation engine using the current space
 
bool isReady () const
 returns true is the simulation is ready to run (or appears so)
 
void relax ()
 call after a sequence of step() have been done
 
void space (Space *spc)
 set current Space More...
 
Spacespace () const
 get current Space
 
SpacefirstSpace (const std::string &name)
 return first Space with this name
 
void foldPosition () const
 call foldPosition() for all objects
 
void step ()
 perform the Monte-Carlo part of the simulation for one time_step
 
void solve ()
 calculate the mechanics of the system and move objects accordingly, for one time_step
 
void calculateForces () const
 calculate Forces and Lagrange multipliers, but do not move objects
 
void dump () const
 dump matrix and vector from Meca
 
void setInteractions (Meca &) const
 call setInteractions(meca) for all objects More...
 
ObjectSetfindSet (const std::string &kind)
 return the ObjectSet corresponding to a class
 
ObjectSet const * findSet (const std::string &kind) const
 return the ObjectSet corresponding to a class
 
ObjectfindObject (const Tag, long)
 find an object from the class-TAG and the inventory number
 
ObjectfindObject (const std::string &, long) const
 find an object from the name of its class and the inventory number
 
FiberfindFiber (long num) const
 find a fiber from the name of the fiber
 
ObjectreadReference (InputWrapper &, char &tag)
 read an Object reference and return the corresponding Object (tag is set) More...
 
bool isProperty (const std::string &) const
 check if the name corresponds to a property class
 
PropertyfindProperty (const std::string &, const std::string &) const
 get an existing property, or return zero
 
PropertyfindProperty (const std::string &, const int index) const
 get an existing property, or return zero
 
SinglePropfindSingleProp (const std::string &nm) const
 find a SingleProp
 
PropertyList findProperties (const std::string &) const
 return all existing propertis of required class
 
PropertynewProperty (const std::string &, const std::string &, Glossary &)
 create a new property
 
void writeProperties (std::ostream &, bool prune) const
 write all properties More...
 
void writeProperties (std::string &file, bool prune) const
 write sim-state to a named file More...
 
int readObjects (InputWrapper &)
 read sim-state from InputWrapper More...
 
int readObjects (std::string const &file)
 read sim-state from a named file More...
 
void writeObjects (OutputWrapper &) const
 write simulation-state to specified file
 
void writeObjects (std::string const &file, bool binary, bool append) const
 write simulation-state in binary or text mode, appending to the file or not More...
 
void report (std::ostream &, std::string const &str, Glossary &) const
 call one of the report function More...
 
void report (std::ostream &, std::string const &what, std::string const &who, Glossary &) const
 call one of the report function More...
 
void reportTime (std::ostream &) const
 print time
 
void analyzeClusters () const
 analyse the network connectivity to identify isolated sub-networks More...
 
void reportClusters (std::ostream &, bool) const
 print size of clusters defined by connections with Couples More...
 
void reportFiber (std::ostream &) const
 print the length and the points of each fiber More...
 
void reportFiberPoints (std::ostream &) const
 print the coordinates of the model-points of each fiber More...
 
void reportFiberForces (std::ostream &) const
 print the coordinates and forces on the model-points of each fiber More...
 
void reportFiberEnds (std::ostream &) const
 print the positions and the states of the two ends of each fiber More...
 
void reportFiberLengths (std::ostream &) const
 print average length and standard deviation for each class of fiber More...
 
void reportFiberLengthDistribution (std::ostream &, real delta, real max) const
 print length distribution for each class of fiber More...
 
void reportFiberSegments (std::ostream &) const
 print number of kinks in each class of Fiber
 
void reportFiberDynamic (std::ostream &, FiberEnd) const
 print number of fibers according to dynamic state of end More...
 
void reportFiberDynamic (std::ostream &) const
 print number of fibers according to their dynamic states More...
 
void reportFiberSpeckles (std::ostream &, real) const
 print coordinates of points along the length of all Fiber More...
 
void reportFiberStates (std::ostream &) const
 print dynamic states of Fiber
 
void reportFiberTension (std::ostream &, Glossary &opt) const
 print Fiber tensions along certain planes defined in opt More...
 
void reportOrganizer (std::ostream &) const
 print Aster positions More...
 
void reportBeadSingles (std::ostream &) const
 print Bead positions More...
 
void reportBeadPosition (std::ostream &) const
 print Bead positions More...
 
void reportSolid (std::ostream &) const
 print Solid positions More...
 
void reportCouple (std::ostream &) const
 print state of Couples More...
 
void reportCouplePosition (std::ostream &) const
 print position of Couples More...
 
void reportCouplePosition (std::ostream &, std::string const &) const
 print position of Couples of a certain kind More...
 
void reportSingle (std::ostream &) const
 print state of Singles More...
 
void reportSinglePosition (std::ostream &) const
 print position of Singles More...
 
void reportSingleForce (std::ostream &) const
 print position of Singles More...
 
void reportSinglePosition (std::ostream &, std::string const &) const
 print position of Singles of a certain kind More...
 
void reportSphere (std::ostream &) const
 print state of Couples More...
 
void reportSpace (std::ostream &) const
 print something about Spaces More...
 
void reportCustom (std::ostream &) const
 print something More...
 
void custom0 ()
 custom function
 
void custom1 ()
 custom function
 
void custom2 ()
 custom function
 
void custom3 ()
 custom function
 
void custom4 ()
 custom function
 
void custom5 ()
 custom function
 
void custom6 ()
 custom function
 
void custom7 ()
 custom function
 
void custom8 ()
 custom function
 
void custom9 ()
 custom function
 

Public Attributes

SimulPropprop
 Global cytosim parameters.
 
PropertyList properties
 holds all Property, except the SimulProp
 
SpaceSet spaces
 list of Space
 
FieldSet fields
 list of Field
 
FiberSet fibers
 list of Fiber
 
SphereSet spheres
 list of Sphere
 
BeadSet beads
 list of Bead
 
SolidSet solids
 list of Solid
 
SingleSet singles
 list of Single
 
CoupleSet couples
 list of Couple
 
OrganizerSet organizers
 list of organizers
 

Member Function Documentation

void analyzeClusters ( ) const

Set Fiber::fleck to indicated Fibers that are connected by Couple.

The clusters are defined by the Couple that are bridging Fibers: Two fibers are in the same cluster if there is a Couple connecting them, of if they can be indirectly connected in this way via other Fibers.

This analysis can be useful to identify mechanically isolated sub-networks in the simulation. The result can be visualized in play with the option fiber:coloring=4, and it can also be printed with the tool report fiber:cluster

void initialize ( Glossary glos)

This will initialize the simulation by registering callbacks. You should still call Simul::prepare() before calling step()

void prepare ( Space spc)

Will pepare the simulation engine to make it ready to make a step():

  • set FiberGrid used for attachment of Hands,
  • set StericGrid
  • call complete() for all registered Property

The simulated objects should not be changed.

int readObjects ( InputWrapper in)

Before reading, all objects are transfered to a secondary list called 'ice'. Every object encountered in the file is updated, and then transferred back to the normal list.

When the read is complete, the objects that are still on 'ice' are deleted. In this way the new state reflects exactly the system that was read from file.

Returns
  • 0 = success
  • 1 = EOF
int readObjects ( std::string const &  file)

Create an InputWrapper and calls readObjects(in)

Object * readReference ( InputWrapper in,
char &  tag 
)

We do not allow property()->index() of an Object to change during import from a file. However, there is no structural reason that prevent this in the code. If necessary, it should be possible to remove this limitation.

The Object is not modified

void report ( std::ostream &  out,
std::string const &  str,
Glossary opt 
) const
void report ( std::ostream &  out,
std::string const &  what,
std::string const &  who,
Glossary opt 
) const
WHAT output
organizer Position of the center of asters and other organizers
bead Position of beads
couple Number and state of couples
fiber Length and position of the ends of fibers
single Number and state of singles
solid Position of center and first point of solids
sphere Position of center and first point of spheres
time Time
parameters All object properties
WHAT:WHO output
fiber:lengths Average length and standard deviation of fibers
fiber:dynamics Number of fiber classified by PLUS_END Dynamic state
fiber:points coordinates of model points of all fibers
fiber:speckles coordinates of points randomly distributed along all fibers
fiber:segments information about lengths of segments, number of kinks
fiber:ends Positions and dynamic states of all fiber ends
fiber:forces Position of model points and Forces acting on model points
fiber:tensions Internal stress along fibers
fiber:clusters Clusters made of fibers connected by Couples
bead:all Position of beads
bead:singles Number of Beads with no single attached, 1 single attached etc.
single:all Position and force of singles
single:NAME Position of singles of class NAME
couple:all Position of couples
couple:NAME Position of couples of class NAME
void reportBeadPosition ( std::ostream &  out) const

Export position of Beads

void reportBeadSingles ( std::ostream &  out) const

Export number of beads classified as a function of the number of grafted Single that are attached to Fibers

void reportClusters ( std::ostream &  out,
bool  details 
) const

Export size of clusters found by Simul::analyzeClusters()

void reportCouple ( std::ostream &  out) const

Export state of Couples

void reportCouplePosition ( std::ostream &  out) const

Export position of Couples

void reportCouplePosition ( std::ostream &  out,
std::string const &  who 
) const

Export position of Couples of a certain kind

void reportCustom ( std::ostream &  out) const

Export end-to-end distance of Fiber

void reportFiber ( std::ostream &  out) const

Export length, position and directions at center of fibers

void reportFiberDynamic ( std::ostream &  out,
FiberEnd  end 
) const

Export number of fiber, classified according to dynamic state of one end

void reportFiberDynamic ( std::ostream &  out) const

Export number of fiber, classified according to dynamic state of one end

void reportFiberEnds ( std::ostream &  out) const

Export dynamic state, positions and directions of fiber ends

void reportFiberForces ( std::ostream &  out) const

Export Fiber-number, position of model points

void reportFiberLengthDistribution ( std::ostream &  out,
real  delta,
real  max 
) const

Export average length and standard-deviation for each class of fiber

void reportFiberLengths ( std::ostream &  out) const

Export average length and standard-deviation for each class of fiber

void reportFiberPoints ( std::ostream &  out) const

Export Fiber-number, position of model points

void reportFiberSpeckles ( std::ostream &  out,
real  spread 
) const

Export positions of points taken randomly along all fibers, but that remain static with respect to the lattice of each fiber, during the life-time of this fiber.

This is meant to simulate the speckle microscopy that is obtained in microcscopy with a low amount of fluorescent-monomers.

The distance between the speckles follows an exponential distribution with an average defined by the parameter spread.

void reportFiberTension ( std::ostream &  out,
Glossary opt 
) const

Sum of the internal tensions from fiber segments that intersect a plane specified in opt. The plane is defined by n.x + a = 0

plane = NORMAL, SCALAR
void reportOrganizer ( std::ostream &  out) const

Export position of Asters and other organizers

void reportSingle ( std::ostream &  out) const

Export state of Single

void reportSingleForce ( std::ostream &  out) const

Export position of Singles

void reportSinglePosition ( std::ostream &  out) const

Export position of Singles

void reportSinglePosition ( std::ostream &  out,
std::string const &  who 
) const

Export position of Singles

void reportSolid ( std::ostream &  out) const

Export position of Solids

void reportSpace ( std::ostream &  out) const

Export something about Space

void reportSphere ( std::ostream &  out) const

Export position of Sphere

void setInteractions ( Meca meca) const

This will:

void space ( Space spc)

set current Space to spc. (zero is a valid argument).

This also set the space of all objects to spc.

void writeObjects ( std::string const &  file,
bool  binary,
bool  append 
) const

This appends the current state to a trajectory file. Normally, this is objects.cmo in the current directory.

If the file does not exist, it is created de novo.

void writeProperties ( std::ostream &  os,
bool  prune 
) const

The order of the output is important, since some properties depend on others (eg. SingleProp and CoupleProp use HandProp). Luckily, there is no circular dependency in Cytosim at the moment.

Thus we simply follow the order in which properties were defined, and which is the order in which properties appear in the PropertyList.

void writeProperties ( std::string &  file,
bool  prune 
) const

At the first call, this will write all properties to file, and save a copy of what was written to a string properties_saved.

The next time this is called, the properties will be compared to the string, and the file will be rewritten only if there is a difference.